package com.yxx.business.entity;

import java.math.BigDecimal;
import com.yxx.common.annotation.Excel;
import com.yxx.common.core.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.experimental.Accessors;
import lombok.*;

import javax.validation.constraints.NotNull;

/**
 * 材料运输信息Vo对象 tb_material_transport
 *
 * @author yxx
 * @date 2025-08-16
 */
@Schema(description = "材料运输信息Vo实体")
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Builder
@Data
public class TbMaterialTransportVo extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @Schema(description = "表ID")
    private Long materialId;

    @Schema(description = "工程ID")
    private String engineeringId;

    @Schema(description = "使用阶段")
    @NotNull(message = "使用阶段不能为空")
    @Excel(name = "使用阶段")
    private String usagePhase;

    @Schema(description = "建材名称")
    @NotNull(message = "建材名称不能为空")
    @Excel(name = "建材名称")
    private String materialName;

    @Schema(description = "用量")
    @Excel(name = "用量")
    private BigDecimal quantity;

    @Schema(description = "单位")
    @NotNull(message = "单位不能为空")
    @Excel(name = "单位")
    private String unit;

    @Schema(description = "建材碳排放因子")
    @Excel(name = "建材碳排放因子")
    private BigDecimal carbonFactor;

    @Schema(description = "换算系数")
    private BigDecimal conversionFactor;

    @Schema(description = "因子单位")
    @NotNull(message = "因子单位不能为空")
    @Excel(name = "因子单位")
    private String factorUnit;

    @Schema(description = "运输方式")
    @NotNull(message = "运输方式不能为空")
    @Excel(name = "运输方式")
    private String transportMode;

    @Schema(description = "运输距离(km)")
    @Excel(name = "运输距离(km)")
    private BigDecimal transportDistance;

    @Schema(description = "运输方式排放因子(kgCO2e/t*km)")
    @Excel(name = "运输方式排放因子(kgCO2e/t*km)")
    private BigDecimal transportFactor;

    @Schema(description = "碳排放量(kgCO2e)")
    @Excel(name = "碳排放量(kgCO2e)")
    private BigDecimal totalEmission;

    @Schema(description = "更新者id")
    private Long createById;

    @Schema(description = "更新者id")
    private Long updateById;

}
